package controladores;

import modelos.daos.ClienteDAO;
import modelos.daos.ReservaDAO;
import modelos.daos.ReservaHabitacionDAO;
import modelos.daos.ReservaSalaDAO;
import modelos.pojos.Reserva;
import modelos.pojos.ReservaHabitacion;
import modelos.pojos.ReservaSala;
import java.util.*;
import org.apache.log4j.Logger;

public class SolicitarReservaCont {

    public static ManagerArchivo archivo = new ManagerArchivo();
    protected static Logger log = Logger.getLogger(SolicitarReservaCont.class);

    public static void actualizarContadorCodigos(){
        Object leer = archivo.leer("SystemVars.wtf");
        String s = leer+"";      
        int cont = Integer.parseInt(s);
        try {
            cont++;
            archivo.escribir(cont, "SystemVars.wtf");
        } catch (Exception ex) {
        }
    }

    public static String generarCodigoReserva() {
        Object leer = archivo.leer("SystemVars.wtf");
        String s = "rev0"+leer; 
        return s;
    }

    public static String validarInformacionReservaHabitacion(Date fechaIngreso, Date fechaSalida) {
        String mensaje = null;
        GregorianCalendar hoy = new GregorianCalendar();
        hoy.setTime(new Date());
        GregorianCalendar in = new GregorianCalendar();
        in.setTime(fechaIngreso);
        GregorianCalendar out = new GregorianCalendar();
        out.setTime(fechaSalida);
        if (!in.before(out) || in.before(hoy) || in.equals(hoy) || in.equals(out)) {
            mensaje = "Por favor verifique estos puntos: <br><br>- Fecha de ingreso igual a hoy o es anterior a esta. <br>- Fecha de ingreso igual a la de salida. <br>-  Fecha de ingreso posterior a la de salida.";
        }
        return mensaje;
    }

    public static String validarInformacionReservaSala(Date fechaEvento) {
        String mensaje = null;
        GregorianCalendar hoy = new GregorianCalendar();
        hoy.setTime(new Date());
        GregorianCalendar fechaE = new GregorianCalendar();
        fechaE.setTime(fechaEvento);
        if (fechaE.before(hoy) || fechaE.equals(hoy)) {
            mensaje = "Por favor verifique estos puntos: <br><br>- Fecha del evento coincide con la actual o es anterior esta.";
        }
        return mensaje;
    }

    public static void crearReserva(Reserva reserva, String cedulaSolicitante) {
        try {
            reserva.setEstado('a');
            ReservaDAO.crear(reserva, ClienteDAO.consultar(cedulaSolicitante).getId());
        } catch (Exception ex) {
            
        }
    }

    public static void crearReservaHabitacion(ReservaHabitacion reservaHabitacion, String codigoReservaPadre) {
        try {
            Reserva reservaPadre = ConsultarReservaCont.consultarReserva(codigoReservaPadre);
            reservaHabitacion.setReserva(reservaPadre);
            ReservaHabitacionDAO.crear(reservaHabitacion);
        } catch (Exception ex) {
            
        }

    }

    public static void crearReservaSala(ReservaSala reservaSala, String codigoReservaPadre) {
        try {
            Reserva reservaPadre = ConsultarReservaCont.consultarReserva(codigoReservaPadre);
            reservaSala.setReserva(reservaPadre);
            ReservaSalaDAO.crear(reservaSala);
        } catch (Exception ex) {
            
        }
    }
}
